package com.baoyouqun.domain.VO;

import com.baoyouqun.domain.Enum.SystemConfigType;
import com.baoyouqun.entity.SystemConfig;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

@Data
public class NonLeopardVisitDTO {

    private String id;

    @ApiModelProperty(value = "是否限制")
    private Boolean limitEnabled;

    @ApiModelProperty(value = "访问时长（天）")
    private Long durationDay;

    /**
     * 从SystemConfig转换（按类型匹配）
     */
    public static NonLeopardVisitDTO fromSystemConfig(SystemConfig systemConfig) {
        if (systemConfig == null || !SystemConfigType.NON_LEOPARD_USER_VISIT_DURATION.equals(systemConfig.getConfigType())) {
            throw new IllegalArgumentException("无效的非豹友访问时长配置数据");
        }

        NonLeopardVisitDTO dto = new NonLeopardVisitDTO();
        dto.setId(systemConfig.getId());
        // Boolean -> Boolean
        dto.setLimitEnabled(systemConfig.getInfo2()); // info2是Boolean
        // Integer -> Integer
        dto.setDurationDay(systemConfig.getInfo3()); // info3是Integer
        return dto;
    }

    /**
     * 转换为SystemConfig
     */
    public SystemConfig toSystemConfig(SystemConfig config) {
        config.setId(id);

        config.setConfigType(SystemConfigType.NON_LEOPARD_USER_VISIT_DURATION);
        config.setConfigName(SystemConfigType.NON_LEOPARD_USER_VISIT_DURATION.getDesc());

        // Boolean类型匹配info2
        config.setInfo2(this.limitEnabled); // 是否限制（Boolean → info2）

        // Integer类型匹配info1
        config.setInfo3(this.durationDay); // 访问时长（天）（Integer → info1）

        return config;
    }
}